Switch Roleの履歴が・・・消えた・・・? って焦る前に入れておくと幸せになれるAWS Extend Switch Rolesの紹介
一体いつからSwitch Roleの履歴が永続的に残るものだと錯覚していた。
というわけで錯覚していた同僚が履歴が消えたことに絶望していたので、 そうなる前に導入しておくと便利なAWS Extend Switch Rolesの紹介です。
Switch Roleってなんぞ?
以下のブログで一発なのでそれを引用したいと思います。
Switch Roleとは複数のAWSアカウントを持っている時にいちいちログアウト - ログインを繰り返さなくてもRoleを設定しておくだけで 簡単に別のアカウントにスイッチできる機能です
弊社でもAWS環境を扱う際は基幹となるAWS アカウントから払い出されたIAM ユーザーに一度ログインし、 その後案件ごとのAWSアカウントのIAM RoleにSwitchする運用になっています。
この場合、担当する案件数が増えれば増えるほど切り替えをしなくてはいけないSwitch Roleが増えることになり、デフォルトのManagement Consoleの履歴では管理しきれないことになります。
Switch Roleの履歴が消えた・・・
様々なツールの検証等でうまく動かない時に、Cookieの削除を求められることがあります。 ツールの検証が目的なのでなにも考えずに削除を行い、その後Management Consoleを開くと絶望することになります。
勘の良い方は気づいたかも知れません。 Switch Roleの履歴はCookieを用いて管理されているため、Cookieの削除を行うと消えてしまうことになります。(冒頭で紹介した同僚もまさにこのような流れでした。)
消えてしまうとSwitch RoleのURLを思い出す必要がありますが、そのアカウントに入る方法が履歴のリンクのみとなると、入る手段を失ったことになります。
こうなると、そのアカウントに入れる他のメンバーにURLを再度教えてもらうといったことを行う必要があり非常に焦ることになります。
そうなる前に入れておくと便利なGoogle Chrome拡張・FireFox Add-onであるAWS Extend Switch Rolesの紹介です。
AWS Extend Switch Rolesの導入
導入自体は以下のサイトから導入することが可能です。
また、Chromium 版のEdgeでも導入することが可能です。
導入が完了したら以下のようなアイコンがブラウザのURLの横に表示されていれば導入は完了です。
基本的な使い方
Switch Role用のURLが払い出された際にまず、AWS Extend Switch Rolesに登録をしてしまいましょう。 払い出されたRole入れることを確認後、登録することを忘れると上記のようなケースに遭遇した瞬間泣くしかありません。 そうなる前に、まず登録しましょう。
登録する情報として、Switch先のRoleのARNが必要です。 Switch先のRoleがIAMにアクセス可能であれば、ManagementConsoleから該当のロールのARNを確認し、 クリップボードにコピーでARNをコピーするのが一番容易かと思います。
IAM にアクセスできない場合は、 Switch RoleのURLから割り出すことが可能です。 払い出されたURLが下記だったと仮定します。
https://signin.aws.amazon.com/switchrole?roleName=switch-target-role&account=123456789012
上記の場合、RoleのARNは以下になります。
arn:aws:iam::123456789012:role/switch-target-role
urlに含まれるroleName=
の後ろがrole/
の後ろの値となり、account=
の後ろの値がiam::
の後ろの値となります。
AWS Extend Switch Roleをクリックし、Configurationから以下のように記載しSaveを押下します。
[profile TargetRole] role_arn = arn:aws:iam::123456789012:role/switch-target-role
また、この際に既存の履歴とAWS Extend Switch Roleの設定で表示される履歴の両方が表示されるのを避けるために、Setting内のHide original role history
にチェックを入れています。
この項目にチェックを入れることで、AWS Extend Switch Roleで設定したSwitch Roleの項目のみが表示されることになります。
正しく設定されていると、ManagementConsoleにアクセスした際に、Switch Roleの履歴のところに以下のように表示されます。 すでにManagement Consoleが表示されている場合は、ブラウザを更新すると表示されるかと思います。
基本的な使い方はこれでOKです。以下は応用的な使い方になります。
便利な使い方 - aws/configを元に手軽に生成する
こちらのブログに記載されている方法になります。
cat ~/.aws/config | awk '/^(role_arn.*|[profile .*])$/ { print $0 }' | pbcopy
上記のコマンドで上記で入力するrole_arn = arn:aws:iam::123456789012:role/switch-target-role
形式の文字列をaws/configから生成することが可能です
便利な使い方 - Switchするロールごとの色を設定する
Management Consoleの履歴機能でも6色から設定できましたが、 AWS Extend Switch Rolesではカラーコードの指定でRoleごとの色を設定することが可能です。
この場合は先程のProfileに以下のように追加します。
[profile TargetRole] role_arn = arn:aws:iam::123456789012:role/switch-target-role color = FF0000
color =
の後ろはカラーコード表記となります。
上記の作例では真っ赤になることになります。
便利な使い方 - Switch元のIAM ユーザーごとに表示するRoleを制御する
Switch元のIAM ユーザーが複数になったことを想定してみます。 その際に、ログインしているIAM ユーザーからSwitchできないRoleの表示を抑制したいといったことになるかと思います。 そのような機能もAWS Extend Switch Rolesでは提供されていたりします。
まずSwitch元のIAM ユーザーのアカウント名を取得します。 ManagementConsoleでSwitch元のIAM ユーザーでログインした際にユーザー名を表示した際に表示される値になります。AWSアカウントのエイリアスを用いてIAM ユーザーにログインしている場合、その値になります。
次に取得したアカウント名をAWS Extend Switch RolesのConfigurationに記載します。 これをAWS Extend Switch Rolesではbase accountと称します。
[baseaccount1] aws_account_id = 123456789012 [baseaccount2] aws_account_id = your-account-alias
SwitchするRoleのbase accountの情報をsource_profile
という項目で設定します。
以下の作例の場合、Base1-Role1
はbaseaccount1
で設定されたAWSアカウント123456789012
のIAMユーザーでログインしたときのみ表示され、
Base2-Role1
はbaseaccount2
で設定されたAWSアカウントのエイリアスがyour-account-alias
のIAMユーザーでログインしたときのみ表示されることになります。
[baseaccount1] aws_account_id = 123456789012 [baseaccount2] aws_account_id = your-account-alias [Base1-Role1] role_arn = arn:aws:iam::234567890123:role/Role1 source_profile = baseaccount1 [Base2-Role1] role_arn = arn:aws:iam::234567890123:role/Role1 source_profile = baseaccount2
このようにすることでSwitch元のIAMユーザーが複数ある場合であっても、SwitchするRoleのみ表示すると言ったことが可能になります。
まとめ
AWS Extend Switch Rolesの基本的な使い方と実際に自分が使ったことのある便利機能の紹介でした。 AWS Extend Switch Rolesは精力的にアップデートもされているため、また何か自分が使ってみて便利な機能があったときは紹介したいと思います。